package com.baofu.paycore.dal.mapper;

import com.baofu.paycore.dal.model.RefundDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
 * 退款主单Mapper
 * <p>
 * 1、新增退款主单信息
 * 2、查询退款主单
 * 3、更新退款主单信息
 * </p>
 * User: xin deng  Date: 16/4/20 ProjectName: paycore Version: 1.0
 */
public interface RefundMapper {

    /**
     * 1.新增退款主单信息
     *
     * @param refundDO    退款信息对象
     * @return            新增记录数
     */
    int insert(RefundDO refundDO);

    /**
     * 查询退款主单
     *
     * @param requestBizNo       请求业务编号
     * @param requestOrderNo     请求订单号
     * @return                   退款主单对象
     */
    RefundDO selectByReqInfo(@Param("requestBizNo")    String requestBizNo,
                             @Param("requestOrderNo")  String requestOrderNo);

    /**
     * 更新退款主单信息
     *
     * @param payNo     退款支付单号
     * @param status    状态
     * @return          更新记录数
     */
    int updateStatusByPayNo(@Param("payNo")  String payNo,
                            @Param("status") String status);

    /**
     * 根据支付单号查询退款主单
     *
     * @param payNo    请求业务编号
     * @return         退款主单对象
     */
    RefundDO selectByPayNo(@Param("payNo") String payNo);

    RefundDO selectByPayNoForUpdate(@Param("payNo")String payNo);

    /**
     * 根据订单号查询
     *
     * @param orderNo         订单号
     * @param requestBizNo    支付流水号
     * @param requestDate     请求日期
     * @return                支付对象
     */
    RefundDO  selectByOrderNo(@Param("requestOrderNo") String orderNo,
                              @Param("requestBizNo") String requestBizNo,
                              @Param("requestDate") Date requestDate,
                              @Param("requestSystem") String requestSystem);
}
